<?php

/**
 * Classe mãe para exibição do cabeçalho da página
 *
 */
class GHeaderParent {

    var $_titulo = "";
    var $_metas = "";
    var $_css = "";
    var $_scripts = "";
    var $_bodyClass = "";
    var $_min = "min";
    var $_libs = array();

    /**
     * Inciar a classe carregando aos arquivos do tema e definindo um título
     *
     * @param String $title
     */
    function __construct($title) {
        $this->_titulo = $title . ' | ' . SYS_TITLE;

        require_once (ROOT_SYS_THEME . 'theme.php');
        $theme = new Theme();
        $this->addTheme($theme->getFiles());
        $this->_libs = getLibsDefault();

        $libDefault = explode(',', SYS_LIB_DEFAULT);
        $this->addLib($libDefault);
    }

    /**
     * Adicionar uma String com metas extras
     *
     * @param String $metas
     */
    function addMetas($metas) {
        $this->_metas = $metas;
    }

    /**
     * Adicionar um css no array de css
     *
     * @param String $scripts
     */
    function addCSS($css) {
        $this->_css[] = $css;
    }

    /**
     * Adicionar um script no array de scripts js
     *
     * @param String $script
     */
    function addScript($script) {
        $this->_scripts[] = $script;
    }

    /**
     * Adicionar uma classe ao body
     *
     * @param String $bodyClass
     */
    function addBodyClass($bodyClass) {
        $this->_bodyClass = $bodyClass;
    }

    /**
     * Adicionar um array de bibliotecas
     *
     * @param array $bibliotecas ex: array('flexigrid','datepicker','ckeditor')
     *
     */
    function addLib($bibliotecas) {
        foreach ($bibliotecas as $bib) {
            if ($bib != '') {
                $arquivos = $this->_libs[$bib];
                foreach ($arquivos as $arq) {
                    $tipo = explode("/", $arq);
                    switch ($tipo[0]) {
                        case "css":
                            $this->addCSS(URL_STATIC_GN . $arq);
                            break;
                        case "js":
                            $this->addScript(URL_STATIC_GN . $arq);
                            break;
                        default:
                            require_once($arq);
                            break;
                    }
                }
            }
        }
    }

    /**
     * Remover uma biblioteca específica
     *
     * @param string $biblioteca
     */
    function removeLib($biblioteca) {
        $arquivos = $this->_libs[$biblioteca];
        foreach ($arquivos as $arq) {
            $tipo = explode("/", $arq);
            switch ($tipo[0]) {
                case "css":
                    $key = array_search($arq, $this->_css);
                    unset($this->_css[$key]);
                    break;
                case "js":
                    $key = array_search($arq, $this->_scripts);
                    unset($this->_scripts[$key]);
                    break;
                default:
                    break;
            }
        }
    }

    /**
     * Adicionar os arquivos do tema
     *
     * @param array $arquivos
     */
    function addTheme($arquivos) {
        foreach ($arquivos as $arq) {
            $tipo = explode("/", $arq);
            switch ($tipo[0]) {
                case "css":
                    $this->addCSS(URL_SYS_THEME . $arq);
                    break;
                case "js":
                    $this->addScript(URL_SYS_THEME . $arq);
                    break;
                default:
                    require_once(ROOT_SYS_THEME . $arq);
                    break;
            }
        }
    }

    /**
     * Renderizar todo o Cabeçalho da página com todos os parametros.
     *
     * @param bool $isIframe
     * @return $html
     */
    function get($isIframe) {
        $html = '';
        $bg = ($isIframe) ? 'style="background:#FFF;min-width: 10px;"' : '';
        $html .= '<!doctype html>';
        $html .= '<!--[if lt IE 8 ]><html lang="en" class="no-js ie ie7" ' . $bg . '><![endif]-->';
        $html .= '<!--[if IE 8 ]><html lang="en" class="no-js ie" ' . $bg . '><![endif]-->';
        $html .= '<!--[if (gt IE 8)|!(IE)]><!--><html lang="en" class="no-js" ' . $bg . '><!--<![endif]-->';
        $html .= '<!--[if lt IE 9]><script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script><![endif]-->';

        // abrir head
        $html .= '<head>';
        // gerar titulo
        $html .= '<title>' . $this->_titulo . '</title>';
        // gerar meta default

        $html .= '<meta charset="UTF-8">';
        $html .= '<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">';
        $html .= '<link rel="shortcut icon" type="image/x-icon" href="' . URL_SYS_THEME . 'img/favicon.ico">';
        $html .= '<link rel="icon" type="image/png" href="' . URL_SYS_THEME . 'img/favicon.png">';

        // gerar metas
        if ($this->_metas != "") {
            $html .= $this->_metas;
        }

        // gerar css montado
        if ($this->_css != "") {
            foreach ($this->_css as $style) {
                $html .= '<link href="' . $style . '" rel="stylesheet" type="text/css" />';
            }
        }

        // gerar scripts montados
        if ($this->_scripts != "") {
            foreach ($this->_scripts as $js) {
                $html .= '<script src="' . $js . '" type="text/javascript" charset="utf-8"></script>';
            }
        }
        // fechar head
        $html .= '</head>';
        //Verifica se foi passada alguma classe para o body
        if ($this->_bodyClass != "")
            $html .= '<body class="' . $this->_bodyClass . '">';
        else
            $html .= '<body>';
        return $html;
    }

    /**
     * Imprimir todo o Cabeçalho da página com todos os parametros.
     *
     * @param bool $isIframe
     * @return $html
     */
    function show($isIframe = false) {
        echo $this->get($isIframe);
    }

}

?>